package ru.niir.goodfil.utils;

/**
 * Информация о цене.
 * Метод Goodfil.getGoodPriceForClient возвращает данную структуру, для передачи информации о том,
 * как именно была получена цена на товар.
 *
 * Класс формируется при создании и не может быть изменен.
 */
public class PriceInfo
{
    /**
     * Идентификатор товара
     */
    private long goodId = -1;

    /**
     * Идентификатор клиента.
     * Если идентификатор клиента равен -1, значит цена была получена для незарегистрированного клиента.
     * (Это максимальная цена на товар, т.е. цена самой "дорогой" клиентской группы)
     */
    private long clientId = -1;

    /**
     * Идентификатор клиентской группы
     * Если идентификатор клиента равен -1, значит цена была получена для незарегистрированного клиента.
     * (Это максимальная цена на товар, т.е. цена самой "дорогой" клиентской группы)
     */
    private long clientGoupId = -1;

    /**
     * Если этот флаг равен true, значит цена на товар для данного клиента была получена из персональных цен
     */
    private boolean personalPrice = false;

    /**
     * Цена на товар
     */
    private float price;

    /**
     * Конструктор
     * @param goodId идентификатор товара
     * @param clientId идентификатор клиента
     * @param clientGoupId идентификатор клиентской группы
     * @param personalPrice флаг, обозначающий, что цена была получена из персональных цен
     * @param price цена на товар
     */
    public PriceInfo(long goodId, long clientId, long clientGoupId, boolean personalPrice, float price)
    {
        this.goodId = goodId;
        this.clientId = clientId;
        this.clientGoupId = clientGoupId;
        this.personalPrice = personalPrice;
        this.price = price;
    }

    /**
     * Идентификатор товара
     */
    public long getGoodId()
    {
        return goodId;
    }

    /**
     * Идентификатор клиента.
     * Если идентификатор клиента равен -1, значит цена была получена для незарегистрированного клиента.
     * (Это максимальная цена на товар, т.е. цена самой "дорогой" клиентской группы)
     */
    public long getClientId()
    {
        return clientId;
    }

    /**
     * Идентификатор клиентской группы
     * Если идентификатор клиента равен -1, значит цена была получена для незарегистрированного клиента.
     * (Это максимальная цена на товар, т.е. цена самой "дорогой" клиентской группы)
     */
    public long getClientGoupId()
    {
        return clientGoupId;
    }

    /**
     * Если этот флаг равен true, значит цена на товар для данного клиента была получена из персональных цен
     */
    public boolean isPersonalPrice()
    {
        return personalPrice;
    }

    /**
     * Цена на товар
     */
    public float getPrice()
    {
        return price;
    }
}
